﻿using ESRI.ArcGIS.SystemUI;
using System;
using DevComponents.DotNetBar;
using ICommand = ESRI.ArcGIS.SystemUI.ICommand;
namespace PlanningGIS.Framework
{
    /// <summary>
    /// 
    /// </summary>
    public interface ICommandPoolEx
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        BaseItem AddCommand(object obj);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="commandName"></param>
        /// <returns></returns>
        ICommand FindCommand(string commandName);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        ICommand get_Command(int index);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="className"></param>
        /// <returns></returns>
        ICommand LoadCommand(string fileName, string className);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="className"></param>
        /// <param name="subType"></param>
        /// <returns></returns>
        ICommand LoadCommand(string fileName, string className, int subType);

        ///// <summary>
        ///// 
        ///// </summary>
        ///// <param name="fileName"></param>
        //void LoadCommands(string fileName);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="pCommand"></param>
        void Remove(ICommand pCommand);

        /// <summary>
        /// 
        /// </summary>
        void RemoveAll();

        /// <summary>
        /// 
        /// </summary>
        void UpdateCommandState();

        /// <summary>
        /// 
        /// </summary>
        /// <param name="pHook"></param>
        void SetHook(object pHook);

        /// <summary>
        /// 
        /// </summary>
        int Count { get; }

        /// <summary>
        /// 
        /// </summary>
        object Hook { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="commandName"></param>
        /// <returns></returns>
        BaseItem FindBaseItem(string commandName);
    }
}

